package java学习.第10章_多线程的入门;

/**
 * 程序、进程、线程
 * 程序：为完成特定任务，
 * 程序（program）：为完成特定任务，用某种语言编写的一组指令的集合。
 *                  即指一段静态的代码，静态对象。
 *
 * 进程（process）：程序的一次执行过程，或是正在内存中运行的应用程序。
 *                如：运行中的QQ，运行中的网易音乐播放器。
 *
 *  每个进程都有一个独立的内存空间，系统运行一个程序即是一个进程从创建、运行到消亡的过程。（生命周期）
 *
 *  程序是`静态`的，进程是`动态`的
 *
 * 进程作为操作系统调度和分配资源的最小单位（亦是系统运行程序的基本单位），
 * 系统在运行时会为每个进程分配不同的内存区域。
 * 现代的操作系统，大都是支持多进程的，支持同时运行多个程序。
 *      比如：现在我们上课一边使用编辑器，一边使用录屏软件，同时还开着画图板，dos窗口等软件。
 *
 * 线程（thread）：进程可进一步细化为线程，是程序内部的一条执行路径。
 *              一个进程中至少有一个线程。
 *
 * 一个进程同一时间若并行执行多个线程，就是支持多线程的
 * 线程作为CPU调度和执行的最小单位。
 *
 * 一个进程中的多个线程共享相同的内存单元，它们从同一个堆中分配对象，可以访问相同的变量和对象。
 * 这就使得线程间通信更简便、高效。 //JVM 方法区和堆是共用的
 * 但多个线程操作共享的系统资源可能就会带来安全的隐患。
 */
public class A_概念 {
    /**
     * 线程
     * 线程调度
     *      分时调度
     *          所有线程轮流使用 CPU 的使用权，并且平均分配每个线程占用 CPU 的时间。
     *      抢占式调度
     *          让优先级高的线程以较大的概率优先使用 CPU。
     *          如果线程的优先级相同，那么会随机选择一个(线程随机性)，Java使用的为抢占式调度
     */
    public static void main(String[] args) {

    }
    /**
     * 并行与并发
     * 并行（parallel）：
     *      指两个或多个事件在同一时刻发生（同时发生）。
     *      指在同一时刻，有多条指令在多个CPU上同时执行。
     *      比如：多个人同时做不同的事
     * 并发（concurrency）：
     *      指两个或多个事件在同一个时间段内发生。
     *      即在一段时间内，有多条指令在单个CPU上快速轮换、交替执行，
     *      使得在宏观上具有多个进程同时执行的效果。
     */
}
